//  ********自定义全局函数  commonly used*********
exports.install = function (Vue, options) {
	//全局变量引入
    //注意全局变量在这里定义默认值，在调用某个函数时再更改对应的值。如果只设定不更改的话，会默认一直是设定的值，类似于const的效果了。
    Vue.prototype.Global = {
        currentDevice:false,//当前设备 是否 mobile 
        ie_nine:false,//当前浏览器是否是ie9环境 
        language:'cn'
    }

	//download_file
    Vue.prototype.downloadFile = function(code){
      let tokenId = sessionStorage.getItem('tokenId') 
      window.location.href=process.env.BASE_API+'/op/fileupload/download_file?fileCode='+code+'&token='+tokenId 
    }

    /*
    	array中元素格式转换_usedby_option v-model
      （option绑定值为数组['']）
    */
	// ['']=>[{code:''}]
	Vue.prototype.RequireCodeToSub = function(arr){
		if(arr.length>0){
			return arr.map(item=>{
				return {
		  					code:item
		  				}
			})
		}
		else{
			return []
		}
	}
	// [{code:''}]=>[''] 
	Vue.prototype.Recontent_fromcode = function(arr){
		let newarr = [] 
		arr.map((item)=>{
			newarr.push(item.code)
		})
		return newarr 
	}

	/*
    	array中元素格式转换_usedbyfile 
    */
	// [{response:{data:{code:''}}}] =>[{code:''}]
	Vue.prototype.ReFileCodeToSub = function(arr){
		if(arr.length>0){
			return arr.map(item=>{
				return {
		  					code:item.status == 'done' ? (item.code || item.response.data.code) :''
		  				}
			})
		}
		else{
			return []
		}
	}
	/* [{code:''}] =》 [{code:'',url:''...}] 为后续上传，存储保持一致设定字段*/
	Vue.prototype.FormEditFile = function(arr){
		if(arr.length>0){
			return arr.map((item,index)=>{
					return {
						url:'/'+index,//cursor效果
						uid:item.code,//uid ：default 默认类型回填 ； 
						code:item.code,//提交表单时 需要取跟上传文件处理后返回同样的code   上传文件后取code
			            name: item.name,
			            status: 'done',  
					}
				})
		}
		else{
			return []
		}
	}
	//delfile  filecode：待删除文件code / arr：文件list
	Vue.prototype.removeFile_fromList = function(filecode,arr){
		arr.map((item,index)=>{ 
  			let code = item.response ? item.response.data.code : item.code
	        if(filecode == code){ 
	            arr.splice(index,1)
	        }
	    })
	}
	
	//textarea 特殊字符串格式存储（空格和换行） n a => n&nbsp;a
	Vue.prototype.strSpace_to_save = function(str){
		if(str  == null ||  str == undefined){
			return ''
		} 
		else{
			str = str.replace(/</g, '&lt;'); //
	        str = str.replace(/>/g, '&gt;'); //
	        str = str.replace(/\n/g, '<br/>');//换行处理
	        str = str.replace(/\s/g, '&nbsp;'); //空格处理
	        return str
		} 
	}
	//textarea 特殊字符转换 n&nbsp;a=> n a
	Vue.prototype.saveSpace_to_str = function(val){ 
		if(val != null){
              val = val.replace(new RegExp("<br/>", "g"), '\n');
              val = val.replace(new RegExp("&nbsp;", "g"), ' '); //空格处理
              val = val.replace(/&lt;/g, '<'); //
              val = val.replace(/&gt;/g, '>'); //
        } 
        return val
	}

	//back_forward
	Vue.prototype.back_common = function(){ 
		 this.$router.go(-1)
	}

	//判断是否是在pc端
    Vue.prototype.isPC_Mobile = function(){
      let t1 = new Date().getTime();
      let browser = {
          versions: function () {
              let u = navigator.userAgent, app = navigator.appVersion;
              return {//移动终端浏览器版本信息
                  trident: u.indexOf('Trident') > -1, //IE内核
                  presto: u.indexOf('Presto') > -1, //opera内核
                  webKit: u.indexOf('AppleWebKit') > -1, //苹果、谷歌内核
                  gecko: u.indexOf('Gecko') > -1 && u.indexOf('KHTML') == -1, //火狐内核
                  mobile: !!u.match(/AppleWebKit.*Mobile.*/) || !!u.match(/AppleWebKit/), //是否为移动终端
                  ios: !!u.match(/\(i[^;]+;( U;)? CPU.+Mac OS X/), //ios终端
                  android: u.indexOf('Android') > -1 || u.indexOf('Linux') > -1, //android终端或者uc浏览器
                  iPhone: u.indexOf('iPhone') > -1 || u.indexOf('Mac') > -1, //是否为iPhone或者QQHD浏览器
                  iPad: u.indexOf('iPad') > -1, //是否iPad
                  webApp: u.indexOf('Safari') == -1 //是否web应该程序，没有头部与底部
              };
          } (),
          language: (navigator.browserLanguage || navigator.language).toLowerCase()
      }
      let flag = false;

      //1.是否mobile，否，肯定不是。
      if (browser.versions.mobile) {
          //2.是否ios或android终端，有一个是
          if (browser.versions.android || browser.versions.ios) {
            // console.log('mobile')
            //在这里更改需要设定的全局变量
            Vue.prototype.Global.currentDevice = true 

               return flag = true;
          }
      }
      if (!flag) { //返回当前是pc端
          // console.log('pc');
          return flag
      }
    }
}